<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\Db;
use think\Request;

class Admin extends Base
{
    //后台管理员列表页
    public function index()
    {
        $title = "列表页";
        $this->assign('title', $title);
        //函数助手查询数据
        $list = db('admin')->select();
        // var_dump($list);
        // die;
        //循环得到角色信息,并存入$list变量中
        foreach ($list as $k => $v) {
            $sql = "select role_name from admin u join admin_role ur on u.id = ur.admin_id join role r on ur.f_role_id = r.id where u.id = ".$v['id'];
            $list[$k]['role'] = Db::query($sql);
        }
        // var_dump($list);
        /*echo '<pre>';
        print_r($list);
        die();*/
        //发送数据
        $this->assign('list', $list);
        return $this->fetch('admin/index');
    }
    //加载后台管理员添加页面
    public function add()
    {
        return $this->fetch('admin/add');
    }
    //执行添加操作
    public function insert()
    {
        $data = [
                'a_username'=>input('username'),
                'a_password'=>md5(input('password')),
        ];
        if(db('admin')->insert($data)){
            return $this->success('添加管理员成功！','admin/index');
        }else{
            return $this->error('添加管理员失败!');
        }
    }
    //加载后台管理员编辑页面
    public function edit()
    {
        $id = input('id');
        $list = db('admin')->select($id);
        $this->assign('list', $list[0]);
        return $this->fetch('admin/edit');
    }
    //执行编辑操作
    public function edited()
    {
        $id = input('id');
        //查询出原管理员信息
        $admins=db('admin')->find($id);
        //得到修改后的信息
        $data = [
                'id'=>input('id'),
                'a_username'=>input('username')
        ];
        //判断是否有修改密码
        if(input('password')){
            $data['a_password']=md5(input('password'));
        }else{
        //如果没有使用原密码
            $data['a_password']=$admins['a_password'];
        }
        if(db('admin')->update($data)){
            $this->success('修改管理员成功！','admin/index');
        }else{
            $this->error('修改管理员失败！');
        }
    }
    //删除用户操作
    public function del()
    {
        $id = input('id');
        if($id != 1){
            if(db('admin')->delete(input('id'))){
                $this->success('删除管理员成功！','admin/index');
            }else{
                $this->error('删除管理员失败！');
            }
        }else{
            $this->error('初始化管理员不能删除！');
        }
    }
    //角色浏览(分配角色操作按钮)
    public function rolelist()
    {
        $this->assign('title', '角色分配');
        //得到当前用户的id
        $id = input('id');
        //查询当前用户信息
        $user = db('admin')->find($id);
        //查询所有角色
        $roles = db('role')->select();
        //将角色信息发送
        $this->assign('roles', $roles);
        //查询当前管理员角色信息
        $sql = "select role_name from admin u join admin_role ur on u.id = ur.admin_id join role r on ur.f_role_id = r.id where u.id = ".$user['id'];
        $role = Db::query($sql);
        if (!empty($role)) {
            foreach ($role as $k => $v) {
                $arr['role'][] = $v['role_name'];
            }
        } else {
            $arr['role'] = false;
        }
        /*var_dump($roles, $role, $arr);
        die();*/
        //将管理员拥有的角色发送过去
        $this->assign('arr', $arr);
        $this->assign('user', $user);
        return $this->fetch('admin/list');
    }
    //保存管理员角色
    public function saverole()
    {
        if (session('admin_user')['id'] != 1) {
            $this->error('没有分配角色权限!');
        }
        $result = Request::instance()->post();
        // var_dump($result);
        // die();
        //判读必须选择一个角色
        if(empty($result['role'])){
            $this->error("请选择一个角色！");
        }
        // die();
        //得到当前管理员的id
        // var_dump($result['id']);
        $uid = $result['id'];
        // die;
        //清除当前管理员所有的角色信息，避免重复添加
        Db::table('admin_role')->where('admin_id', $uid)->delete();
        foreach($result['role'] as $v){
            $data['admin_id'] = $uid;
            $data['f_role_id'] = $v;
            //执行添加
            db('admin_role')->insert($data);

        }

        $this->success("角色分配成功", 'admin/index');
        
    }
}
